package inmobiliaria.frsf.dao.impl;

import inmobiliaria.frsf.dao.InmuebleDAO;
import inmobiliaria.frsf.model.DatosAdicionales;
import inmobiliaria.frsf.model.Inmueble;
import inmobiliaria.frsf.resources.connect.SqlMapConfig;

import java.util.List;
import java.util.Map;

import com.ibatis.sqlmap.client.SqlMapClient;

public class InmuebleDAOImpl implements InmuebleDAO {

	private SqlMapClient sqlMapClient = SqlMapConfig.getSqlMap();

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * inmobiliaria.frsf.dao.InmuebleDAO#guardar(inmobiliaria.frsf.model.
	 * Inmueble)
	 */
	public Integer guardar(Inmueble inmueble) throws Exception {
		return (Integer) sqlMapClient.insert("insertInmueble", inmueble);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see inmobiliaria.frsf.dao.InmuebleDAO#getById(java.lang.Integer)
	 */
	public List<Inmueble> searchInmueble(Map<String, Object> datos)
			throws Exception {

		List<Inmueble> inmuebles = (List<Inmueble>) sqlMapClient.queryForList("datosInmueble", datos);

		return inmuebles;
	}
	
	public Integer guardarDatosAdicionales(DatosAdicionales datos) throws Exception {
		Integer id_datos = (Integer) sqlMapClient.insert("insertDatos", datos);
		return id_datos;
	}
	
	/*
	 * (non-Javadoc)
	 * 
	 * @see inmobiliaria.frsf.dao.InmuebleDAO#eliminar(java.lang.Integer)
	 */
	public void eliminar(Integer id) throws Exception {
		sqlMapClient.delete("deleteInmueble", id);

	}

	public void eliminarAdicional(Integer id) throws Exception {
		sqlMapClient.delete("deleteDatoAdicional", id);

	}
	
	
	/**
	 * @return the sqlMapClient
	 */
	public SqlMapClient getSqlMapClient() {
		return sqlMapClient;
	}

	/**
	 * @param sqlMapClient
	 *            the sqlMapClient to set
	 */
	public void setSqlMapClient(SqlMapClient sqlMapClient) {
		this.sqlMapClient = sqlMapClient;
	}

	
	/**
	 * Edita los datos adicionales de un inmueble
	 * 
	 * @param datos
	 *            Datos adicionales del inmueble
	 * 
	 * @throws Exception
	 */
	public void editarDatosAdicionales(DatosAdicionales datos) throws Exception {
		sqlMapClient.update("updateDatos", datos);
		
	}

	/**
	 * Persiste las modificaciones realizadas al inmueble
	 * 
	 * @param inmueble
	 *            Inmueble modificado
	 * 
	 * @throws Exception 	 
	 */
	public void guardarEdicion(Inmueble inmueble) throws Exception{
		sqlMapClient.update("updateInmueble", inmueble);
	}
}
